package com.example.dbcms.controller.admin;

import com.example.dbcms.annotation.Log;
import com.example.dbcms.domain.Repair;
import com.example.dbcms.domain.Residents;
import com.example.dbcms.service.RepairService;
import com.example.dbcms.utils.ResultVoUtil;
import com.example.dbcms.vo.ResultVo;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@Controller
@Api("维修记录操作")
@RequestMapping("/admin/repair")
public class RepairController {

    @Autowired
    private RepairService repairService;

    /**
     * 跳转到维修信息页面
     * @param repair
     * @param modelMap
     * @return
     */
    @GetMapping("/repairInfo")
    @ApiOperation("跳转到维修信息页面")
    @Log(type="跳转到维修信息页面")
    public String repairInfo(Repair repair,ModelMap modelMap) {
        System.out.println(repair);
        /** 得到分页结果 */
        PageInfo<Repair> repairPageInfo = repairService.selectAllRepair(repair);
        modelMap.put("repairInfoList",repairPageInfo.getList());
        if(repair.getStatus()==null){
            repair.setStatus("全部");
        }
        modelMap.put("repairInfo",repair);
        modelMap.put("pageInfo",repairPageInfo);
        return "admin/repair/index";
    }

    /**
     * 跳转到维修页面详细信息
     * @param id
     * @param modelMap
     * @return
     */
    @GetMapping("/detailRepair/{id}")
    @ApiOperation("跳转到维修页面详细信息")
    @Log(type="跳转到维修页面详细信息")
    public String detailRepair(@PathVariable("id") int id,ModelMap modelMap){
        modelMap.put("repair",repairService.getRepair(id));
        return "admin/repair/detail";
    }

    /**
     * 通过id跳转到编辑页面
     * @param id
     * @return
     */
    @ApiOperation("通过id跳转到编辑页面")
    @GetMapping("/editRepair/{id}")
    @Log(type="通过id跳转到编辑页面")
    public String editRepair(@PathVariable("id") int id,ModelMap modelMap){
        modelMap.put("repair",repairService.getRepair(id));
        return "admin/repair/edit";
    }

    /**
     * 修改维修信息到数据库
     * @param repair
     * @return
     */
    @PostMapping("/editRepair")
    @ResponseBody
    @ApiOperation("修改维修信息到数据库")
    @Log(type="修改维修信息到数据库")
    public ResultVo saveRepair(Repair repair){
        int result = repairService.editRepair(repair);
        if(result == 1){
            return ResultVoUtil.success("修改成功");
        }else if(result==-1){
            return ResultVoUtil.error("余额不足");
        }else if(result==-2){
            return ResultVoUtil.error("该用户不存在");
        }
        return ResultVoUtil.error("修改失败");
    }

    /**
     * 删除一条维修记录
     * @param id
     * @return
     */
    @GetMapping("/deleteRepair/{id}")
    @ApiOperation("删除一条维修记录")
    @ResponseBody
    @Log(type="删除一条维修记录")
    public ResultVo deleteRepair(@PathVariable("id") int id){
        int result = repairService.deleteRepair(id);
        if(result == 1){
            return ResultVoUtil.success("删除成功");
        }
        return ResultVoUtil.error("删除失败");
    }

    /**
     * 删除多条数据
     * @param ids
     * @return
     */
    @PostMapping("/deleteMultiple")
    @ResponseBody
    @ApiOperation("删除多条数据")
    @Log(type="删除多条数据")
    public ResultVo deleteMultipleRepair(@RequestParam(value = "ids") List<Integer> ids){
        int count = repairService.deleteMultipleRepair(ids);
        if(count==ids.size()){
            return ResultVoUtil.success("删除成功");
        }
        return ResultVoUtil.error("删除多条数据失败");
    }

    /**
     * 跳转到新建维修信息页面
     * @return
     */
    @GetMapping("/addRepair")
    @ApiOperation("跳转到新建维修信息页面")
    @Log(type="跳转到新建维修信息页面")
    public String addRepair(){
        return "admin/repair/add";
    }

    /**
     * 新增维修信息
     * @param repair
     * @return
     */
    @PostMapping("/addRepair")
    @ResponseBody
    @ApiOperation("新增维修信息")
    @Log(type="新增维修信息")
    public ResultVo addRepairToDb(Repair repair){
        int result = repairService.addRepair(repair);
        if(result == 1){
            return ResultVoUtil.success("添加成功");
        }else if(result==-1){
            return ResultVoUtil.error("余额不足");
        }else if(result==-2){
            return ResultVoUtil.error("该用户不存在");
        }
        return ResultVoUtil.error("添加失败");
    }

}
